package com.xmqsfsky1017.skysrf.utils;
import android.content.Context;
import android.os.Looper;
import android.os.Handler;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;
public class Tools {
    public static void setEvent(View view, EventSetter events) {
        if (view == null || events == null) {
            return; // 避免空指针
        }
        // 1. 初始化手势检测器（处理双击、单击）
        GestureDetector gestureDetector = new GestureDetector(view.getContext(), new GestureDetector.SimpleOnGestureListener() {
            // 双击事件：两次点击间隔符合系统判定时触发
            @Override
            public boolean onDoubleTap(MotionEvent e) {
                events.together(); // 前置逻辑
                events.onDoubleClick(); // 触发双击回调
                return true;
            }
            // 单击事件：确认不是双击后触发（避免双击时的第一次点击误判）
            @Override
            public boolean onSingleTapConfirmed(MotionEvent e) {
                events.together(); // 前置逻辑
                events.onClick(); // 触发点击回调
                return true;
            }
            // 长按事件（可选，也可以保留你原本的 setOnLongClickListener）
            // 这里用 gestureDetector 的长按，和你原本逻辑等效
            @Override
            public void onLongPress(MotionEvent e) {
                events.together(); // 前置逻辑
                events.onLongClick(); // 触发长按回调
            }
        });
        // 2. 处理滑动事件（保留你原本的滑动判断逻辑）
        view.setOnTouchListener(new View.OnTouchListener() {
            private float startX, startY;
            private boolean isLongPressDown = false;
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // 先将事件传递给手势检测器（让它处理双击、单击、长按）
                gestureDetector.onTouchEvent(event);
                boolean isHandled = false;
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        // 记录滑动起点（和你原本逻辑一致）
                        startX = event.getX();
                        startY = event.getY();
                        // 触发长按按下
                        events.together();
                        events.onLongPressDown();
                        isLongPressDown = true;
                        break;
                    case MotionEvent.ACTION_UP:
                        // 触发长按抬起（如果之前是长按按下状态）
                        if (isLongPressDown) {
                            events.together();
                            events.onLongPressUp();
                            isLongPressDown = false;
                        }
                        // 计算滑动距离（和你原本逻辑一致）
                        float dx = event.getX() - startX;
                        float dy = event.getY() - startY;
                        // 水平滑动判断（阈值 50，和你原本一致）
                        if (Math.abs(dx) > Math.abs(dy) && Math.abs(dx) > 50) {
                            events.together(); // 前置逻辑
                            if (dx > 0) {
                                events.onSlideRight();
                            } else {
                                events.onSlideLeft();
                            }
                            isHandled = true;
                        }
                        // 垂直滑动判断（阈值 50，和你原本一致）
                        else if (Math.abs(dy) > 50) {
                            events.together(); // 前置逻辑
                            if (dy > 0) {
                                events.onSlideDown();
                            } else {
                                events.onSlideUp();
                            }
                            isHandled = true;
                        }
                        break;
                }
                return isHandled;
            }
        });
    }
    // 显示短提示消息（不变）
    public static void showMessage(Context context, String message) {
        if (context != null) {
            Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
        }
    }
    
    public static void wait(double tOfSec) {
        long delayMillis = Math.round(tOfSec * 1000);
        Handler mainHandler = new Handler(Looper.getMainLooper());
        mainHandler.postDelayed(() -> {}, delayMillis);
    }
    
}
